In image-capturing systems (still or video), there may be distortion of an image due to an imperfect optical system. The captured data is stored initially to an external dynamic random access memory (DRAM). For processing, small pieces of the captured data are read into a local, on-chip memory. Processing is performed on small pieces because a fast memory that is large enough to fit the entire image would not be economical. Vertical distortion across the width of the image can complicate image-processing algorithms that perform work on an image in individual horizontal strips.
It is desirable to minimize the amount of DRAM bandwidth used, to save power and/or to preserve bandwidth for other functions. It is also desirable to minimize the amount of local memory needed to process the image data. A fixed height local memory could minimize DRAM usage by only fetching the minimum number of rows of pixel data at a time as needed. However, as the vertical distortion across the width of the image becomes larger, a larger local buffer is needed in order to contain enough data to produce a single strip of undistorted image data.
It would be desirable to implement an image-capturing system that minimizes the overhead of dealing with image distortions.